§ 1.1 Field of the Invention
The present invention concerns intelligently downloading resources, including computational resources, software components, or informational resources for example, from a source to one or more intermediate storage facilities. The present invention also concerns intelligently distributing resources among intermediate storage facilities having different latencies. Finally, the present invention concerns evaluating whether or not to modify the capabilities of (e.g., increase or decrease) intermediate storage facilities.
§ 1.2 Related Art
Often, resources, such as software components, data, or content for example, are downloaded from a source to an intermediate storage facility(ies). Typically, the finite size of the intermediate storage facility(ies) limits the amount of resources that can be downloaded. As such resources are needed, by an executing application program for example, they are then loaded from the intermediate storage facility(ies) to a working storage area. FIG. 1 depicts this relationship between a resource source 110, an intermediate storage facility(ies) 120, and a working storage area 130, all in an environment 100. Naturally, if resources requested by an application are not currently stored at the intermediate storage facility(ies) 120 (when not in the working storage area 130), then they must be obtained from another source.
Further, resources, such as data or instructions for example, may be distributed across a number of intermediate storage facilities having various latencies. For example, computers have used data and instruction caching to download data or instructions from a relatively slow and large storage area (such as a magnetic disk for example) to a relatively fast and small storage area (such as RAM for example) (also referred to as “cache memory”). In this way, the computer's processor can access needed data or instructions from the cache memory, if it is stored there (also referred to as a “hit”); if not (also referred to as a “miss”), it will access the needed data or instructions from the slower larger memory. Some methods have managed the cache memory in an attempt to maximize a ratio of hits to misses. Typically, most recently used data are stored in a cache, and when the cache becomes full, the least recently used data is “flushed” from the cache.
A few environments in which the present invention may operate are introduced below. First, an environment in which software components are installed from a removable mass storage media (such as a compact disk(s) (or “CD”) ROM(s), for example) to a non-volatile intermediate storage facility(ies) (such as a hard magnetic disk drive, for example) is introduced in § 1.2.1 below. Second, an environment in which software is loaded onto resident, non-volatile, memory of an un-tethered (or wireless) device, such as a palm computer, a personal digital assistant, a cordless telephone, an information appliance or any other wireless or un-tethered device, is introduced in § 1.2.2 below. Third, an environment having multiple storage facilities having different latencies is introduced in § 1.2.3 below. Fourth, an environment in which software components or multimedia resources are loaded from a source server to a more local intermediate storage facility(ies) is introduced in § 1.2.4 below. Finally, unmet needs in each of the four (4) exemplary embodiments are summarized in § 1.2.5.
§ 1.2.1 First Exemplary Environment
A first exemplary environment, in which software components are loaded from a CD ROM(s) to a hard magnetic disk drive of a personal computer is now introduced. As is known, software is often distributed and sold as computer executable code stored on a CD ROM(s). A computer user often invokes a so-called “installation wizard” which controls the download of software components from the CD ROM to appropriate directories on the hard magnetic disk drive residing on their personal computer. Though the capacity of hard magnetic disk drives has greatly increased over the past decade, and is expected to continue increasing, disk drive resources are finite and often must be rationed. Moreover, to make applications easier to use and to offer users a rich computing experience, the amount of software code in typical applications has also increased over the last decade. Thus, to reiterate, disk drive resources often must be rationed.
As one example, the Microsoft Visual Studio™ development system (from the Microsoft Corporation of Bellevue, Wash.) is used by software developers developing applications for a Microsoft Operating system platform such as Windows® 95 or Windows NT® for example. This product contains about two (2) gigabytes of software. Some personal computers do not have this much magnetic hard disk storage capacity. Even personal computers having a magnetic hard disk drive of two (2) or more gigabytes often have other applications, operating systems, or data which may leave little, or insufficient, disk storage remaining for additional software. Developers may typically only use specific subsets of the software. Thus, it is believed that such developers would like to download only software components that they will need.
In view of the increasing size of software applications and the need to ration disk drive (or other storage facility) resources, some software applications have installation wizards which permit users to load software components for (a) a standard version of the application, or (b) an enhanced or professional version of the application. The standard version of the application is perfectly acceptable for most users and requires less storage space. The enhanced or professional version of the application provides increased functions, but requires more storage space. Moreover, software applications may have installation wizards that permit users to load core software components, which are necessary for the application to operate, and to expressly select additional, non-essential components.
While the foregoing installation wizards have aided many personal computer users in rationing their hard disk (or other storage facility) resources, challenges remain. For example, applications having installation wizards which permit standard or enhanced versions of the application to be installed are limited to two (2) versions of the application and rely on a judgment, made at one time, by the application developer as to what functions most “standard” users will want. Applications having installation wizards which install core software components and selected optional software components rely on a user's selection, which may be uniformed and which may cause confusion and undue anxiety in uniformed users.
Thus, there is a need for methods and apparatus for intelligently downloading software components from a source to an intermediate storage facility(ies). Such methods and apparatus should be as automated as possible thereby relieving users of often difficult or confusing decisions. Moreover, such methods and apparatus should minimize the risk, while conserving magnetic hard disk (or other storage facility) resources, that a user will need a software component that was not installed.
§ 1.2.2 Second Exemplary Environment
In a second exemplary environment, software components, and data such as addresses, telephone numbers, schedules, and to-do lists, for example, are loaded onto an un-tethered device, such as a palm computer, a personal digital assistant, a cordless telephone, or another information appliance. In such cases, the software components and/or data are transferred from a source having less limited storage, such as a desktop personal computer for example. Such un-tethered devices typically have relatively small amounts of available storage. The users of such devices are typically willing to sacrifice storage capacity for the freedom of movement that un-tethered computing devices afford. However, most users would clearly prefer the enhanced functionality and features provided under the operating environments of their desktop computers. To make applications easier to use and to offer users a rich computing experience, the amount of software code in typical applications will undoubtedly increase. However, analogous to the hard magnetic disk drives of personal computers, the storage of such un-tethered devices is finite and often must be rationed.
§ 1.2.3 Third Exemplary Environment
In a third environment, some computers users will have access to more than one disk drive, each of which may have different latencies and different capacities. A user may partition the capacity of these drives into one or more logical drives. When installing software, the software will be stored to a default directory on a default logical drive, unless a user specifies a logical drive and directory at which the software is to be installed. In either case, little, if any, thought is given to optimizing the distribution of software components across various storage devices. The present inventor has recognized that during the installation of software components, it would be advantageous to optimally install the software components on the various disk drives.
§ 1.2.4 Fourth Environment
An exemplary environment in which software components or multimedia resources are loaded from a source server (e.g., an Internet server) to a more local intermediate storage facility(ies) (e.g., a regional proxy server, a resident server, a hard disk drive cache area, etc.) is now introduced.
Recently, to reduce the costs of distributing software, many software producers have been distributing software over the Internet, using the file transfer protocol (of “FTP”) for example. Updates and patches to correct “bugs” in the software are also available over the Internet. Often, a download site, as a part of a software producer's home site, is provided at the software producer's Internet site server. In many instances, mirror sites, at various geographic locations, are used to provide the same download capability, but at a site closer to the end user or at a site having more excess capacity to serve download requests. Unfortunately, however, such mirror sites are not tailored to the specific populations of end users in different locations. Rather, as the name implies, the content offered at such sites “mirrors” that found at the download site provided at the software producer's Internet site server.
Regarding content, such as multimedia content, at least one Internet service provider (@HOME Network of Redwood City, Calif.) has built a separate network which parallels the Internet. This separate network uses the same underlying protocols as those used on the Internet to ensure compatibility with the Internet. The @HOME network uses a hierarchical, distributed network architecture with caching and replication facilities, in an effort to ensure that information an end user wants is “close” to that end user. More specifically, the @HOME network employs local caching servers to (i) improve performance by using the cache as a dedicated local server, (ii) reduce the amount of data movement in higher layers of the hierarchical network, and (iii) use usage statistics for tuning performance, tailoring the service, and targeting promotions and advertising. Unfortunately, it is believed that the @HOME network uses rather primitive caching techniques when determining what to download and store at the local caching servers. Moreover, it is believed that such caching is tailored to the specific environment of the @HOME network.
§ 1.2.5 Unmet Needs
In view of the expected increasing size of software applications and the need to ration storage resources, there is a need for methods and apparatus for intelligently installing software components or for intelligently downloading software components and data to un-tethered computing devices. Such methods and apparatus should be as automated as possible thereby relieving users of often uninformed, difficult, or confusing decisions. Moreover, such methods and apparatus should minimize the risk, while conserving storage resources, that a user will need a software component or data that was not downloaded. Further, there is a need for methods and apparatus for intelligently distributing resources among storage facilities having various latencies. Furthermore, there is a need to determine whether or not to change (e.g., increase or decrease) a capacity (or some other characteristic, such as read access time) of an intermediate storage facility.